package com.xltt.watchclient.module.utils;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.provider.CallLog;

import androidx.core.app.ActivityCompat;

import com.xltt.watchclient.R;

public class BleUtils {
    /**
     * 格式化内容，部分应用存在数据格式不对，需要进行优化
     *
     * @param context
     * @param pkg
     * @param title
     * @param content
     * @return
     */
    public static String convertContent(Context context, String pkg, String title, String content) {
        if (pkg.equals("com.tencent.mm")) {//微信内容优化
            int subIndex = content.indexOf("]");//截取消息[5条]Zzzzzzz: 请问
            if (subIndex != -1) {
                content = content.substring(subIndex + 1);
            }
            return content;
        } else if (pkg.equals("com.mms")) {//用户手机短信
            if (title.contains("条新信息") || title.contains("new messages")) {//中英文通知
                if (content.indexOf(",") != -1) {
                    content = content.substring(0, content.indexOf(","));
                } else if (content.indexOf("、") != -1) {
                    content = content.substring(0, content.indexOf("、"));
                }
                return context.getString(R.string.new_message_form) + content;
            } else {//单条新未读消息
                return context.getString(R.string.new_message_form) + content;
            }
        }
        return content;
    }


    /**
     * 按照李满需求格式话应用包名，然后才可以在手表通知中显示
     *
     * @param pkg
     * @return
     */
    public static String convertPakageName(String pkg) {
        //短信
        if (pkg.equals("com.android.mms.service") //vivo手机包名-----最新短信
                || pkg.equals("com.android.mms"))//所有品牌手机系统包名
        {
            pkg = "com.mms";
        } else if (pkg.equals("com.android.phone")//电话
                || pkg.equals("com.android.incallui") //所有品牌手机系统包名
                || pkg.equals("com.android.contacts")//华为所有手机包名---未接来电通知
                || pkg.equals("com.android.server.telecom")//红米K30 5G---未接来电通知
        ) {
            pkg = "com.dialer";
        }
        return pkg;
    }

    /**
     * 优化应用不需要的title
     *
     * @param context
     * @param pkg
     * @param title
     * @param content
     * @return
     */
    public static String getNoticationTitle(Context context, String pkg, String title, String content) {
        //1.把微信的title取消，保留内容发送即可
        if (pkg.equals("com.tencent.mm")) {
            if (title.indexOf("、") != -1
                    || title.indexOf(",") != -1
                    || title.equals(context.getString(R.string.group_chat))) {
                title = "";
            } else {
                title = "";
            }
        } else if (pkg.equals("com.whatsapp")) {//去掉whatsApp的title，因为和内容的数据重复了
            title = "";
        }
        return title;
    }

    /**
     * 过滤监听通知的应用包名
     *
     * @param pkg
     * @return
     */
    public static boolean isListentNoticationPkg(String pkg) {
        if (pkg.equals("com.whatsapp")//马来聊天
                || pkg.equals("com.tencent.mm")//微信
//                || pkg.equals("com.android.mms") //短信应用
//                || pkg.equals("com.mms") //短信应用
//                || pkg.equals("com.android.mms.service") //短信应用
//                || pkg.equals("com.android.incallui")//电话
                || pkg.equals("com.dialer")//电话
//                || pkg.equals("com.android.contacts")//电话
//                || pkg.equals("com.android.phone")//电话
//                || pkg.equals("com.android.server.telecom")//电话

        ) {
            return true;
        }
        return false;
    }

    /**
     * 获取未接来电数量
     * @param context
     * @return
     */
    public static int readMissCall(Context context) {
        int result = 0;
        if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
            return -1;
        }
        Cursor cursor = context.getContentResolver().query(CallLog.Calls.CONTENT_URI, new String[]{
                CallLog.Calls.TYPE
        }, " type=? and new=?", new String[]{
                CallLog.Calls.MISSED_TYPE + "", "1"
        }, "date desc");

        if (cursor != null) {
            result = cursor.getCount();
            cursor.close();
        }
        return result;
    }
}
